package main

import "fmt"

type person struct{
	Name string
	Age int
}

//工厂模式函数，用来创建Person实例，可以在创建的时候初始化对象的状态
func NewPerson(name string,age int)*person{
	return &person{
		Name:name,
		Age:18,
	}
}


//对person里的Age字段进行封装，即写两个方法，一个用来设置Age，一个用来获取Age
// func (p *person)SetAge(age int){
// 	//0~120
// 	if age >= 0 && age <=120{
// 		p.Age = age	
// 	} else {
// 		fmt.Println("年龄不合理")
// 	}
// }

	


func (p *person) GetName() string {
	return p.Name

// 对Name进行封装，如果传入一个空字符串，输出：“姓名为空”

func (p *person) SetName(name string) {
	if name == " " {
		fmt.Println("姓名为空")
	} else {
		p.Name = name
	}}}

func main() {
	n1 := NewPerson("刘备", 38)
	fmt.Println(n1.GetName())
	n1.SetName("刘备")
	n1.SetName("") 
	fmt.Println(n1.GetName())
}